package 第三章运算符;
/*
    赋值运算符
        赋值类运算符包括两种
            基本赋值运算符：
             =
            扩展赋值运算符 ：
             +=
             -=
             *=
             /=
             %=

           1、赋值类运算符优先级：先执行右边语句，再将结果赋值给左边
           2、注意以下代码：
            byte i=10;
            i+=5；等同于： i=(byte)(i+5);
            long x =10L;
            int y =20;
            y+=x; 等同于 y=(int)(y+x);
            结论：扩展类的赋值运算符不改变最终运算结果类型，
            假设该变量为byte类型，无论其进行什么运算，其始终为byte类型

     字符串连接运算符
     三目运算符/条件运算符
 */

public class Operator04 {
    public static void main(String[] args) {
        //基本赋值运算符

        int i = 2;
        System.out.println(i);  //2

        i = i + 3;
        System.out.println(i);  //5

        int a = 3;
        //扩展的赋值运算符
        a += 5;   //等同于   a=a+5;
        //a-=5    等同于   a=a-5；
        //a*=5    等同于   a=a*5；
        System.out.println(a);
        System.out.println("——————————————");

        byte b = 10;
        //编译错误，b+5要先转换成int类型运算，而b是byte类型，所以报错
        //b=b+5;
        //修改如下
        b = (byte) (b + 5);
        System.out.println(b);

        byte x1 = 10;
        x1 += 5;      //等同于   x1=(byte)(x1+5);  和 x1=x1+5有区别
        System.out.println(x1);

        byte x2 = 10;
        x2 += 129;        //语法没有错误，但是会损失精度  等同于x2=(byte)(x2+129);
        System.out.println(x2);

    }
}
